#include <Arduino.h>  
  #include <Wire.h>  
  
const int trigPin = 2;  // ESP32上的GPIO引脚，连接超声波模块的Trig引脚  
const int echoPin = 4;  // ESP32上的GPIO引脚，连接超声波模块的Echo引脚  
const int ledPin = 13; // ESP32上的GPIO引脚，连接LED的负极（如果LED正极接VCC）  
  
const float soundSpeed = 34029; // 声速，单位为厘米/秒，这里取的是20摄氏度时的近似值  
const float durationToCm = soundSpeed / 2 / 100000; // 将时间（微秒）转换为距离（厘米）的系数  
  
void setup() {  
  pinMode(trigPin, OUTPUT);  
  pinMode(echoPin, INPUT);  
  pinMode(ledPin, OUTPUT);  
  Serial.begin(115200); // 初始化串口通信，用于调试  
}  
  
void loop() {  
  // 发送10微秒的高电平信号到Trig引脚  
  digitalWrite(trigPin, LOW);  
  delayMicroseconds(2);  
  digitalWrite(trigPin, HIGH);  
  delayMicroseconds(10);  
  digitalWrite(trigPin, LOW);  
  
  // 读取Echo引脚上的脉冲宽度  
  float duration = pulseIn(echoPin, HIGH);  
  
  // 将脉冲宽度转换为距离  
  float distance = duration * durationToCm;  
  
  // 通过串口打印距离  
  Serial.print("Distance: ");  
  Serial.print(distance);  
  Serial.println(" cm");  
  
  // 根据距离控制LED的亮灭  
  if (distance < 10.0) { // 如果距离小于10厘米  
    digitalWrite(ledPin, HIGH); // LED亮  
  } else {  
    digitalWrite(ledPin, LOW); // LED灭  
  }  
  
  delay(100); // 稍微延迟一下，防止过快地刷新  
}     